package org.example.mapper;

import org.apache.ibatis.annotations.Mapper;
import org.example.model.User;

import java.util.List;

//mybatis的mapper接口，需要使用@Mapper注解
//1.mybatis框架来帮助注册bean对象到容器中（框架实现当前接口，重写接口方法及实现）
//2.框架会重写接口方法：
//（1）接收输入（方法参数）+xml文件中的sql=>执行sql
//（2）如果是查询操作，会根据xml配置的结果集映射类型（方法返回值类型），将结果集转换为该类型的对象
@Mapper
public interface UserMapper {

    //查询所有用户
    List<User> selectAll();

    List<User> selectAll2();

    //插入：简单类型
    int insert1(String username, String password);

    //插入：对象
    int insert2(User user);

    //查询：对象
    //根据对象的github属性查询
    List<User> queryByGithub(User user);


    //修改：对象；常见做法：根据id主键，修改其他非主键字段（目前的写法，没有传的字段，就会修改为null）
    int updateById(User user);

    int deleteByNickname(String nickname);

    List<User> selectOrderBy(String columnName, String orderBy);

    List<User> selectList(String nickname);//如果包含nickname，就返回

    //1对多的结果集映射
    List<User> selectOneToMany();

    User selectOne(User params);
}
